package com.ruoyi.iot.mapper;

import com.ruoyi.iot.domain.entity.DeviceElectricalWindow;
import com.ruoyi.iot.domain.query.DeviceElectricalWindowQuery;
import java.time.LocalDateTime;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 电气窗口Mapper
 */
@Mapper
public interface DeviceElectricalWindowMapper {

    /**
     * 查询最新窗口结束时间
     *
     * @param deviceId 设备编号
     * @param granularityMinutes 聚合粒度
     * @return 最新窗口结束时间
     */
    LocalDateTime selectLatestWindowEnd(@Param("deviceId") String deviceId,
                                        @Param("granularityMinutes") int granularityMinutes);

    /**
     * 查询最新电气窗口
     *
     * @param deviceId 设备编号
     * @param granularityMinutes 聚合粒度
     * @return 电气窗口
     */
    DeviceElectricalWindow selectLatestWindow(@Param("deviceId") String deviceId,
                                              @Param("granularityMinutes") int granularityMinutes);

    /**
     * 查询设备电气窗口列表
     *
     * @param query 查询条件
     * @return 数据列表
     */
    List<DeviceElectricalWindow> selectList(DeviceElectricalWindowQuery query);

    /**
     * 批量插入窗口数据
     *
     * @param list 窗口集合
     * @return 影响行数
     */
    int insertBatch(@Param("list") List<DeviceElectricalWindow> list);
}
